import {observable,action,computed} from "mobx";
import Axios from "./../util/axios";
import Api from "./../api/index"
class UserStore{
    user = {} //私有变量，用于存储用户的信息
    token = "" //私有变量，用于存储token的信息
    @observable isLogin = false;
    @computed get user(){
        //用户返回
        //看sessionStorage里的值，是否存在
        //只有没有被观察的才能用计算属性
        if(sessionStorage.getItem("user")){
            return JSON.parse(sessionStorage.getItem("user"))
        }
        return {};
    }
    set user(data){
        // this.user = data; 加上这句会陷入死循环
        sessionStorage.setItem("user",JSON.stringify(data));
    }
    @computed get token(){
        //用户返回
        //看sessionStorage里的值，是否存在
        //只有没有被观察的才能用计算属性
        if(sessionStorage.getItem("token")){
            return sessionStorage.getItem("token")
        }
        return "";
    }
    set token(token){
        // this.token = data;
        sessionStorage.setItem("token",token);
    }

    @action
    login(userForm){
        //这里发起请求 axios api
        return new Promise((resolve,reject)=>{
            Axios.post(Api.user.userLogin,{
                userName:userForm.user,
                userPwd:userForm.password
            }).then((res)=>{
                if(res.data.returnCode===200){
                    console.log(res)
                    this.user = res.data;
                    this.token = res.data.token;
                    resolve(res)
                }

            }).catch((err)=>{
                reject(err)
            })
        })
    }
}

export default UserStore